package haiyangwangwork.lesson02;

import java.util.Random;
import java.util.Scanner;

public class Work {
    public static void main(String[] args) {
        boolean lock = true;
        Scanner sc = new Scanner(System.in);
        while (lock == true) {
            System.out.println("\n");
            System.out.println("---------------------day01-day05 Work------------------------");
            System.out.println("|\t\t1、第1题  \t2、第2题  \t3、第3题  \t\t\t|");
            System.out.println("|\t\t4、第4题  \t5、第5题  \t6、第6题  \t\t\t|");
            System.out.println("|\t\t7、第7题  \t8、第8题  \t9、第9题  \t\t\t|");
            System.out.println("|\t\t10、第10题\t11、第12题\t12、第13题\t\t\t|");
            System.out.println("------0、退出系统---------黑马java48期罗柱作业--------------------");
            System.out.print("-->请输入要运行的题目：");
            int number = sc.nextInt();
            switch (number) {
                case 0: {
                    lock = false;
                    break;
                }
                case 1: {
                    //第1题方法
                    MaxNum();
                    break;
                }
                case 2: {
                    //第2题方法
                    NumSum();
                    break;
                }
                case 3: {
                    //第3题方法
                    StrArr();
                    break;
                }
                case 4: {
                    //第4题方法
                    char[] arr = {'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J'};
                    CharArr(arr);
                    break;
                }
                case 5: {
                    //第5题方法
                    Student(99);
                    break;
                }
                case 6: {
                    //第6题方法
                    Six('A');
                    break;
                }
                case 7: {
                    //第7题方法
                    ClassStuName();
                    break;
                }
                case 8: {
                    //第8题方法
                    Game();
                    break;
                }
                case 9: {
                    //第9题方法
                    Shopping();
                    break;
                }
                case 10: {
                    //第10题方法
                    Tables();
                    break;
                }
                case 11: {
                    //第12题方法
                    int[] arr1 = {4, 1, 7, 5};
                    System.out.println(LookupMax(arr1));
                    break;
                }
                case 12: {
                    //第13题方法
                    Lottery();
                    break;
                }
                default:{
                    while(true){
                        System.out.println("输入错误，请输入选择显示的数字：");
                        number = sc.nextInt();
                        if(number>0&&number<13){
                            break;
                        }
                    }
                }
            }
        }
    }
    //continueGeme方法用于暂停、结束程序使用；
public static boolean continueGeme(Scanner sc,boolean lock){
    System.out.println("-->按回车继续，按0结束进程");
    String conNum=sc.nextLine();
    if(conNum.equals('0')){
        lock = false;
    }
    return lock;
}
    //一、 需求：定义函数，键盘录入三个数，获取这个3个数值中的最大值
    public static int MaxNum() {
        System.out.println("一、 需求：定义函数，键盘录入三个数，获取这个3个数值中的最大值");
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入第一个数：");
        int num1 = sc.nextInt();
        System.out.println("请输入第二个数：");
        int num2 = sc.nextInt();
        System.out.println("请输入第三个数：");
        int num3 = sc.nextInt();
        int max = num1 > num2 ? num1 : num2;
        int max2 = num1 > num2 ? num1 : num3;
        return max > max2 ? max : max2;
    }
/*二、	需求:使用键盘录入提示用户输入一个1和50之间的奇数
将用户输入的数累加求和,当和大于100时候则退出,不满足则继续提示用户输入,
最后在控制台打印输出求得的总和。*/

    public static void NumSum() {
        System.out.println("二、需求:使用键盘录入提示用户输入一个1和50之间的奇数\n" +
                "将用户输入的数累加求和,当和大于100时候则退出,不满足则继续提示用户输入,\n" +
                "最后在控制台打印输出求得的总和。");
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入1-50之间的奇数：");
        int num = sc.nextInt();
        while (num < 1 || num > 50 || num % 2 == 0) {
            System.out.println("输入错误，请输入1-50之间的奇数：");
            num = sc.nextInt();
        }
        while (num < 100) {
            num = num+num;
        }
        System.out.println("输入的奇数累加总和：" + num);
    }

    /*三、	定义一个方法，给定一个数组，
    将数组中的元素转为字符串输出。如{2015,5,25}转为”2015-5-25”输出*/
    public static void StrArr() {
        System.out.println(" 三、定义一个方法，给定一个数组，\n" +
                "将数组中的元素转为字符串输出。如{2015,5,25}转为”2015-5-25”输出");
        int[] arr = {2015, 5, 25};
        for (int i = 0; i < arr.length; i++) {
            if (i < arr.length - 1)
                System.out.print(arr[i] + "-");
            else
                System.out.print(arr[i]);
        }

    }

    /*四、定义存储类型为char，大小为10的数组，
    存储A、B、C、…、J，定义一个函数用于遍历打印数组中的元素*/
    public static void CharArr(char[] arr) {
        System.out.println("四、定义存储类型为char，大小为10的数组，\n" +
                "    存储A、B、C、…、J，定义一个函数用于遍历打印数组中的元素");
        for (int i = 0; i < arr.length; i++) {
            System.out.println(arr[i]);
        }
    }

    /*五、案例：根据给定的成绩，判断学生属于哪一类学生
          学生等级划分：
          90以上：称为“学霸”
          80~90：称为优等生
          70~80：称为：高等生
          60~70：称为：中等生
          60以下：称为：”潜力股”
    */
    public static void Student(int num) {
        System.out.println("五、案例：根据给定的成绩，判断学生属于哪一类学生\n" +
                "          学生等级划分：\n" +
                "          90以上：称为“学霸”\n" +
                "          80~90：称为优等生\n" +
                "          70~80：称为：高等生\n" +
                "          60~70：称为：中等生\n" +
                "          60以下：称为：”潜力股”");
        if (num >= 90) {
            System.out.println("学霸");
        } else if (num >= 80 && num < 90) {
            System.out.println("优等生");
        } else if (num >= 70 && num < 80) {
            System.out.println("高等生");
        } else if (num > 60 && num < 70) {
            System.out.println("中等生");
        } else {
            System.out.println("潜力股");
        }

    }

    /*六、案例：使用switch语句判断给定的字符是否为元音字母（大小写 A E U I O）*/
    public static void Six(char ch) {
        System.out.println("六、案例：使用switch语句判断给定的字符是否为元音字母（大小写 A E U I O）");
        switch (ch) {
            case 65: {
                System.out.println("A");
                break;
            }
            case 69: {
                System.out.println("E");
                break;
            }
            case 73: {
                System.out.println("I");
                break;
            }
            case 79: {
                System.out.println("O");
                break;
            }
            case 125: {
                System.out.println("U");
                break;
            }
            default:
                System.out.println("不是元音字母！");
        }
    }

    /*七、需求：模拟编写一个随机点名器，即在全班同学中随机的打印出一名同学名字。
    要做的随机点名器，它具备以下3个内容：
    	存储所有同学姓名
    	总览全班同学姓名
    	随机点名其中一人，打印到控制台
    */
    public static void ClassStuName() {
        System.out.println("七、需求：模拟编写一个随机点名器，即在全班同学中随机的打印出一名同学名字。\n" +
                "    要做的随机点名器，它具备以下3个内容：\n" +
                "    \uF06C\t存储所有同学姓名\n" +
                "    \uF06C\t总览全班同学姓名\n" +
                "    \uF06C\t随机点名其中一人，打印到控制台");
        Scanner sc = new Scanner(System.in);
        System.out.print("请输入班级学生人数：");
        int num = sc.nextInt();
        String[] names = new String[num];
        for (int i = 0; i < names.length; i++) {
            int num_j=i + 1;
            System.out.println("请输入第" +num_j  + "个学生的姓名：");
            names[i] = sc.next();
        }
        System.out.println("总览全班学生名字：");
        for (int j = 0; j < names.length; j++) {
            System.out.print(names[j]+"\t");
        }
        Random rd = new Random();
        System.out.println("随机抽取一名同学：" + names[rd.nextInt(names.length)]);

    }

    /*八、实现猜数字的小游戏，随机生成一个数字,让用户猜
结果三种情况:中了, 大了, 小了，如果没猜中让用户继续输入数字重新猜
*/

    public static void Game() {
        System.out.println("八、实现猜数字的小游戏，随机生成一个数字,让用户猜\n" +
                "结果三种情况:中了, 大了, 小了，如果没猜中让用户继续输入数字重新猜");
        Random rd = new Random();
        int num = rd.nextInt(10);
        Scanner sc = new Scanner(System.in);
        System.out.println("该系统产生0-10之间的随机数，请猜测数字：");
        int num1 = sc.nextInt();
        while (true)
            if (num1 > num) {
                System.out.println("猜大了，再猜：");
                num1 = sc.nextInt();
            } else if (num1 < num) {
                System.out.println("猜小了，再猜：");
                num1 = sc.nextInt();
            } else if (num == num1) {
                System.out.println("恭喜你，猜中了！！！！");
                break;
            }
    }

    /*九、模拟商品库存统计表，输出效果如下：*/
    public static void Shopping() {
        System.out.println("九、模拟商品库存统计表");
        String[] str = {"MacBookAir", "ThinkPadT450", "ASUS_FL5800"};
        double[] size = {13.3, 14.0, 15.6};
        double[] pice = {6988.88, 5999.99, 4999.5};
        int[] num = {5, 10, 18};
        int sumNum = 0;
        int sumPice = 0;
        for (int i = 0; i < num.length; i++) {
            sumNum += num[i];
            sumPice += pice[i];
        }
        System.out.println("----------商场库存清单----------");
        System.out.println("商品型号" + "\t\t" + "尺寸" + "\t\t" + "价格" + "\t\t" + "库存数");
        System.out.println(str[0] + "\t\t" + size[0] + "\t\t" + pice[0] + "\t\t" + num[0]);
        System.out.println(str[1] + "\t\t" + size[1] + "\t\t" + pice[1] + "\t\t" + num[1]);
        System.out.println(str[2] + "\t\t" + size[2] + "\t\t" + pice[2] + "\t\t" + num[2]);
        System.out.println("库存总数：" + sumNum);
        System.out.println("商品库存总金额：" + sumPice);
    }

    /*十、定义方法，通过键盘录入的数字，使用三种方式输出打印99乘法表*/
    public static void Tables() {
        System.out.println("十、定义方法，通过键盘录入的数字，使用三种方式输出打印99乘法表");
        System.out.println("----------------正序打印-----------------------");
        for (int i = 1; i < 10; i++) {
            for (int j = 1; j <= i; j++) {
                System.out.print(j + "*" + i + "=" + i * j + "\t");
            }
            System.out.println();
        }
        System.out.println("\n");
        System.out.println("----------------倒序打印-----------------------");
        for (int i = 9; i > 1; i--) {
            for (int j = 1; j <= i; j++) {
                System.out.print(j + "*" + i + "=" + i * j + "\t");
            }
            System.out.println();
        }
        System.out.println("\n");
        System.out.println("----------------斜着打印-----------------------");
        for (int i = 9; i > 1; i--) {
            for (int j = 1; j <= i; j++) {
                System.out.print(j + "*" + i + "=" + i * j + "\t");
            }
            System.out.println();
            for (int k = 0; k <= 9 - i; k++) {
                System.out.print("     \t");
            }
        }
    }

    /*十二、给定一个数
    组，int[] arr = {4,1,7,5}; 需求定义一个方法,查找出数组中的最大值。*/
    public static int LookupMax(int[] arr) {
        System.out.println("十二、给定一个数组，int[] arr = {4,1,7,5}; 需求定义一个方法,查找出数组中的最大值。");
        int max = 0;
        for (int i = 0; i < arr.length; i++) {
            max = max > arr[i] ? max : arr[i];
        }
        return max;
    }
    /*十三、模拟双色球彩票中奖小案例(数组版):
     * 双色球规则:双色球每注投注号码由6个红色球号码和1个蓝色球号码组成。
     * 红色球号码从1—33中选择；蓝色球号码从1—16中选择
     */

    public static void Lottery() {
        System.out.println("\n" +
                "    /*十三、模拟双色球彩票中奖小案例(数组版):\n" +
                "     * 双色球规则:双色球每注投注号码由6个红色球号码和1个蓝色球号码组成。\n" +
                "     * 红色球号码从1—33中选择；蓝色球号码从1—16中选择");
        Random rd = new Random();
        Scanner sc = new Scanner(System.in);
        int[] ball = new int[7];//记录双色球开奖号码
        int[] number = new int[7];
        int win = 0;//记录红球选中次数
        int blue = 0;//记录红球是否选中
        for (int i = 0; i < ball.length; i++) {//产生随机数
            if (i == 6)
                ball[i] = rd.nextInt(16) + 1;
            else
                ball[i] = rd.nextInt(33) + 1;

        }
        for (int j = 0; j < number.length; j++) {
            int num_j = j + 1;
            if (j == 6) {
                System.out.println("请输入1个篮球号码1-16：");
                number[j] = sc.nextInt();
                while (number[j] < 1 || number[j] > 16) {
                    System.out.println("输入有误，请输入1个篮球号码1-16：");
                    number[j] = sc.nextInt();
                }
            } else {
                System.out.println("请输入第" + num_j + "个红球号码1-32：");
                number[j] = sc.nextInt();
                while (number[j] < 1 || number[j] > 32) {
                    System.out.println("输入有误，请重新输入第" + num_j + "个红球号码1-32：");
                    number[j] = sc.nextInt();
                }
            }
        }
        for (int k = 0; k < ball.length; k++) {
            if ((k == ball.length - 1) && (number[k] == ball[k])) {
                blue = 1;//表示选中了蓝色球
            } else if (number[k] == ball[k]) {
                win++;//选中一次红色球加一次
            }
        }
        System.out.print("今日开奖号码为：");
        for (int m = 0; m < ball.length; m++) {
            System.out.print(ball[m] + "\t");
        }
        System.out.println();
        System.out.print("您的号码为：");
        for (int m = 0; m < number.length; m++) {
            System.out.print(number[m] + "\t");
        }
        System.out.println();
        if (blue == 1) {
            if (win == 6) {
                System.out.println("一等奖");
            } else if (win == 5) {
                System.out.println("二等奖");
            } else if (win == 3 || win == 4) {
                System.out.println("三等奖");
            } else if (win == 1) {
                System.out.println("四等奖");
            } else {
                System.out.println("抱歉，您没有中奖！");
            }
        } else
            System.out.println("抱歉，您没有中奖！");
    }
}




